Modern computing devices, such as general purpose computers, network devices (e.g., routers, etc.), consumer electronics devices, etc. typically operate based on a number of different software elements working together on top of an underlying operating system or kernel. Information or data relating to operation of the computing device and its various elements is typically passed between the software elements and the operating system in the form of messages. In some instances, it may be beneficial to filter such information so that each executing software element is not unnecessarily receiving each message.
Existing computing devices typically filter messages between software elements based on a filter value's location in the message being filtered. For example, a message filter may specify that a value of “12345” is found at a location “12” bytes from the beginning of the message. This offset value of “12” bytes indicates, with specificity, where the value to be filtered on is located.
Unfortunately, current filtering techniques do not adequately support changing the format of underlying messages or target software without requiring corresponding changes to the control software.